home *** CD-ROM | disk | FTP | other *** search
- /************************************************************
- * 共通一般ライブラリー OKOME System 2 *
- ************************************************************/
-
- #include <stdio.h>
- #include <string.h>
- #include <math.h>
- #include <EGB.H>
- #include <tifflib.h>
- #include <normlib.h>
-
- int tiffload(char *name, int xf, int yf)
- {
- char p[2048];
- int i, ofs, tags, x, y, pix, y2=0, gm;
- /* int ask=0, pal=0, palof=0, size=0; */
-
- FILE *fp;
- if ((fp = fopen(name, "rb")) == NULL) {
- fclose(fp);
- return (-1);
- }
-
- fread(p, 1, 8, fp); /* 識別 */
- if (strncmp( p, "II*", 3) != 0) {
- fclose(fp);
- return (-2);
- }
- ofs = DWORD(p + 4);
- fseek( fp, ofs, SEEK_SET );
- fread( &p[8], 1, 2, fp );
- for ( tags = WORD(p + 8); tags>0; tags--) {
- fread( p, 1, 12, fp );
- i = DWORD(p + 8);
- switch(WORD(p)) {
- case 0:
- tags = 0;
- break;
- case 0x100:
- x = i;
- break;
- case 0x101:
- y = i;
- break;
- case 0x102:
- pix = i;
- break;
- /* case 0x103:
- ask = i;
- break; */
- /* case 0x106:
- pal = i;
- break; */
- case 0x111:
- ofs = i;
- break;
- case 0x116:
- y2 = i;
- break;
- /* case 0x117:
- size = i;
- break; */
- /* case 0x140:
- palof = i;
- break; */
- }
- }
- i = EGB_getWritePage(0,0);
- i = (EGB_getResolution( NULL, NULL ) >> (i*8)) & 0xff;
- EGB_getModeInfo( i, NULL,NULL, NULL,NULL, &gm);
- if ((1<<pix) == gm || (pix == 16 && gm == 32768))
- {
- fseek( fp, ofs, SEEK_SET );
- for ( y2 = 0; y2 <= y; y2++ ) {
- fread( p, 1, ceil( x*pix/8.0 ), fp );
- egbput(xf, yf+y2, xf+x, yf+y2, p);
- }
- i = 0;
- } else {
- if (pix == 1)
- {
- fseek( fp, ofs, SEEK_SET );
- for ( y2 = 0; y2 <= y; y2++ ) {
- fread( p, 1, ceil( x/8.0 ), fp );
- egbputc(xf, yf+y2, xf+x, yf+y2, p);
- }
- i = 0;
- } else {
- i = pix;
- }
- }
- fclose(fp);
- return (i);
- }
-